package liwenxia.com.tree_learn.demo2;

import java.util.ArrayList;
import java.util.List;

public class MainApp {

    public static void main(String[] args) {

        List<Integer> a=new ArrayList<>();
        a.add(99);
        a.add(94);
        a.add(92);
        a.add(911);
        a.add(54);
        a.add(67);
        a.add(39);
        TreeNode tree = new MainApp().createTree(a);
        System.out.println(tree);
    }

    /**
     * 创建一个树，从数组中
     * @param array
     * @return
     */
    private TreeNode createTree(List<Integer> array){
        TreeNode root=new TreeNode(100);
        for (int i = 0; i < array.size(); i++) {
            insert(root,array.get(i));
        }
        return root;
    }

    /**
     *插入一个节点
     * @param root
     * @param integer
     */
    private void insert(TreeNode root, Integer integer) {
        /**
         * 如果插入结点小于 当前结点的数据，就放在左子树
         */
        if (root.data>integer){
            /**
             * 有可能当前结点没有左子结点，就创建一个节点，把数据放在该节点
             */
            if (null==root.left)
            {
                TreeNode left=new TreeNode(integer);
                root.left=left;
            }else {
                /**
                 * 如果该节点有左子结点，就再和该节点比较，递归
                 */
                insert(root.left,integer);
            }
        }else {
            if (null==root.right)
            {
                TreeNode right=new TreeNode(integer);
                root.right=right;
            }else {
                insert(root.right,integer);
            }
        }
    }
}
